<?php

class Application_Model_Racks extends Sgit_Model
{  
    protected $_name = 'racks';
    protected $_primary = 'id';


    public function getRack($id)
    {
        return $this->getRacks(array(), $id);
    }


    public function getRacks($values = array(), $id = null)
    {
        
        $select = $this->getAdapter()->select();
     
        $select->from(array($this->_name));
        $select->joinLeft('proyectos', 'proyectos.id = racks.id_proyecto', array('proyecto'=>'nombre'));
        $select->joinLeft('salas', 'salas.id = racks.id_sala', array('sala'=>'nombre'));
       
       
        if (!is_null($id))
        {
            $select->where("racks.id= ?", $id);

        } else
        {
            if ($values['id_zona'])
                $select->where('racks.id_zona= ?', $values['id_zona']);
            if ($values['id_proyecto'])
                $select->where('racks.id_proyecto= ?', $values['id_proyecto']);
            if ($values['id_sala'])
                $select->where('racks.id_sala= ?', $values['id_sala']);

        }


        $rows = $this->getAdapter()->fetchAll($select);

        $activos=new Application_Model_RacksActivos();
        foreach($rows as $k => $v)
        {
            $rows[$k]['status']=($rows[$k]['id_proyecto']) ? 'En uso' : 'Libre';
            $rows[$k]['activos']=$activos->getActivos(array('id_rack'=>$v['id']));
         
            foreach($rows[$k]['activos'] as $w)
            {
                $rows[$k]['u_ocupadas']+=$w['num_u'];
                $rows[$k]['potencia_ocupada']+=$w['potencia_maxima'];
            }
            
            $rows[$k]['u_libre']=$rows[$k]['capacidad_u']-$rows[$k]['u_ocupadas'];
            $rows[$k]['potencia_libre']=$rows[$k]['capacidad_potencia']-$rows[$k]['potencia_ocupada'];
            
        }


        if (is_null($id))
            return $rows;
        else
            return $rows[0];


    }
    
    
    function createRacksFromCircuitos(){
        $id_proyecto=2041;
        $where['id_cuadro = ?']=$id_proyecto;
        $where['huella != ?']='';
        $m_circuito=new Application_Model_Circuitos();
        $m_proyecto=new Application_Model_Proyectos();


        $huellas = $m_circuito->getAll($where,null,'huella');
        
        

        foreach($huellas as $v)
        {
            if($v['id_proyecto'])
                $pro= $m_proyecto->getRow($v['id_proyecto']);
            
            $record['id_proyecto']=$v['id_proyecto'];
            $record['id_sala']=$pro['id_sala'];
            $record['id_zona']=$pro['id_zona'];
            $record['huella']=$v['huella'];
            $record['matricula']=$v['huella'];
            $record['denominacion']=$v['huella'];
            $record['departamento']=$pro['nombre'];
            $id= $this->insertRow($record);
            
            
        }
        
        
        $circuitos = $m_circuito->getAll($where);
        
        foreach($circuitos as $c)
        {
            $where2['id_proyecto = ?']=$c['id_proyecto'];
            $where2['huella = ?']=$c['huella'];
            $data['id_rack']=$this->getOne('id',$where2);
            $m_circuito->updateRow($data,$c['id']);
        }
        
        
        

        
    }
    
    
    
} 




